/**
 * 为jquery绑定一个kit命名空间
 */
$.extend({
    // 一些弹出提示相关的工具命名空间
    prompt: {},
    // 个些表单类相关工具的命名空间
    array: {},
    // 一些请求的方法封装
    http: {},
    // 一些打印日志的方法
    logs: {},
    // 一些验证方法
    vali: {}
});

// 一些弹出提示相关的工具类
$.extend($.prompt, {
    /**
     * <p>
     * 打印提示信息的aler，提示信息必须调用此方法
     * </p>
     *
     * @param msg
     *            需要打印的内容
     * @param url
     *            打印消息后，需要跳转的路径
     * @example $.prompt.alert("内容");
     * @author 杨阳
     * @since 2017年9月4日
     */
    alert: function (msg, url) {
        layer.open({
            content: msg,
            fixed: true,
            anim: 1,
            yes: function (index, layero) {
                layer.close(index);
                if (null != url) {
                    window.location.href = url;
                }
            }
        });
    },
    /**
     * <p>
     * 需要提示的一些操作提示，直接传入需要刷新的表示以及url就可以删除成功
     * </p>
     *
     * @param msg
     *            提示语
     * @param url
     *            删除数据的地址
     * @param obj
     *            可能是刷新表格的对象，也可能是要跳转的地址
     * @example $.prompt.delPromptBox(msg, url, table);
     * @author 杨阳
     * @since 2017年9月7日
     */
    delPromptBox: function (msg, url, obj) {
        layer.open({
            anim: 6,
            fixed: true,
            content: msg,
            yes: function (index, layero) {
                $.http.submitForm({
                    url: url,
                    success: function (r) {
                        if (r && r.success) {
                            layer.close(index);
                            if (Object.prototype.toString.call(obj) === '[object Object]') {// 如果是对象
                                obj.reload();
                                $.prompt.alert(r.msg, null);
                            } else if (Object.prototype.toString.call(obj) === '[object String]') {// 如果是字符串
                                $.prompt.alert(r.msg, obj);
                            }
                        } else {
                            $.prompt.alert(r.msg, null);
                        }
                    }
                });
            }
        });
    }
});

// 一些表单相关的工具类
$.extend($.array, {
    /**
     * <p>
     * 将数组按指定符号拼接成字符串
     * </p>
     *
     * @param Array
     *            数组
     * @param delimiter
     *            分隔符号
     * @return 字符串
     * @example $.array.join(Array, 'delimiter');
     * @author 杨阳
     * @since 2017年9月4日
     *
     */
    join: function (array, delimiter) {
        var str = "";
        array.each(function (i) {
            if (i > 0) {
                str += ",";
            }
            if (Object.prototype.toString.call($(this)) === '[object Object]') {// 如果是对象
                str += $(this).val();
            } else if (Object.prototype.toString.call($(this)) === '[object String]') {// 如果是字符串
                str += $(this);
            }
        });
        return str;
    }
});

// 一些请求相关的工具类
$.extend($.http, {
    /**
     * <p>
     * 利用jquery的ajax进行请求
     * </p>
     *
     * @param options
     *            用户传入的ajax配置
     * @example $.http.ajax({url:""});
     * @author 杨阳
     * @since 2017年9月4日
     *
     */
    submitForm: function (options) {
        // 定义ajax的默认属性
        var defaultOptions = {
            url: "",
            dataType: "json",
            type: "post",
            success: function (r) {

            },
            error: function () {
                $.prompt.alert("请求失败，请重试!");
            }
        };

        // 将默认配置与用户传入配置进入深度拷贝
        var opt = $.extend(true, {}, defaultOptions, options);

        $.ajax(opt);
    }
});

// 一些在浏览器console打印的调试工具
$.extend($.logs, {
    /**
     * <p>
     * 调用console.info(进行打印);
     * </p>
     *
     * @param msg
     *            需要打印的信息
     * @example $.logs.info(内容);
     * @author 杨阳
     * @since 2017年9月4日
     *
     */
    info: function (msg) {
        if (window.console) {
            console.info(msg);
        }
    }
});

// 一些验证的方法
$.extend($.vali, {
    /**
     * <p>
     * 验证是否是正整数
     * </p>
     *
     * @param value
     *            需要验证的内容
     * @example $.vali.positiveInteger(内容);
     * @author 杨阳
     * @since 2017年9月25日
     *
     */
    positiveInteger: function (value) {
        var pattern = /[1-9]\d*/;
        return pattern.test(value);
    }
});

/**
 * <p>
 * 让iframe随着内容的高度而改变高度,要在iframe onload方法中调用
 * </p>
 *
 * @param iframeID
 *            iframe的ID
 * @author 杨阳
 * @since 2017年9月4日15:39:28
 * @demo <iframe onload="iframeAutoHeight(iframeID);"></iframe>
 */
function iframeAutoHeight(iframeID) {
    var frame = document.getElementById(iframeID);
    var outHeight = frame.offsetHeight;
    var inHeight = frame.contentWindow.document.body.scrollHeight;
    if (outHeight < inHeight) {
        frame.style.height = (inHeight + 30) + "px";
    } else if (inHeight > 650) {
        frame.style.height = (inHeight + 30) + "px";
    } else {
        frame.style.height = "750px";
    }
}